package com.example.kingdeescan.impl;

import android.content.Context;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.kingdeescan.enums.DocType;
import com.example.kingdeescan.interfaces.FragmentService;
import com.example.kingdeescan.interfaces.FragmentServiceListener;

import androidx.fragment.app.Fragment;

/**
 * author  : zly
 * date    : 2020/7/20 17:17
 * desc    : Fragment的相关操作接口的实现类
 */
public class FragmentServiceImpl implements FragmentService {

    /**
     * 校验单据类型(RecoredFragment)
     * @param context
     *      上下文环境
     * @param container
     *      容器View
     * @param fragment
     *      响应的Fragment
     * @param docType
     *      单据类型值
     * @return
     *      true:单据类型不为空
     *      false:单据类型为空
     */
    @Override
    public boolean validDocType(Context context, ViewGroup container, Fragment fragment, DocType docType) {
        if (null==docType){
            Toast.makeText(context,"请先选择单据类型!",Toast.LENGTH_SHORT).show();
            //判断是否实现该接口，实现了才可以调用接口方法，处理委托事件
            if (context instanceof FragmentServiceListener)
            {
                ((FragmentServiceListener)context).onNonDocTypeEventListener(container,fragment);
            }
            return false;
        }
        return true;
    }

    /**
     * 校验搜索类型(SearchFragment)
     * @param context
     *      上下文环境
     * @param container
     *      容器View
     * @param fragment
     *      响应的Fragment
     * @param searchType
     *      搜索类型值
     * @return
     *      true:搜索类型不为空
     *      false:搜索类型为空
     */
    @Override
    public boolean validSearchType(Context context, ViewGroup container, Fragment fragment, int searchType) {
        if (0==searchType){
            //判断是否实现该接口，实现了才可以调用接口方法，处理委托事件
            if (context instanceof FragmentServiceListener)
            {
                ((FragmentServiceListener)context).onNonSearchTypeEventListener(container,fragment);
            }
            return false;
        }
        return true;
    }

    /**
     * 未校验的方式调用目标Fragment
     * @param context
     * @param container
     * @param fragment
     */
    @Override
    public void invalidInvokeFragment(Context context, ViewGroup container, Fragment fragment) {
        if (context instanceof FragmentServiceListener)
        {
            ((FragmentServiceListener)context).onInvalidInvokeFragmentEventListener(container,fragment);
        }
    }
}
